home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 August / CHIP_CD_2004-08.iso / software / amc / amc_install.exe / {app} / Scripts / Startrek.ifs < prev    next >
Encoding:
Text File  |  2004-03-20  |  19.8 KB  |  770 lines

  1. // GETINFO SCRIPTING
  2. // Paramount StarTrek.Com import Episode Info With picture
  3.  
  4. (***************************************************
  5. *  Episode Information importation script for:     *
  6. *      StarTrek(US), http://www.startrek.Com       *
  7. *                                                  *
  8. *  (c) 2003 Trekkie     asimov@hotmail.com         *
  9. *                                                  *
  10. *  For use with Ant Movie Catalog 3.4.0            *
  11.  *  www.antp.be/software/moviecatalog              *
  12.  *                                                 *
  13.  *  This program is free software; you can         *
  14.  *  redistribute it and/or modify it under the     *
  15.  *  terms of the GNU General Public License as     *
  16.  *  published by the Free Software Foundation;     *
  17.  *  either version 2 of the License, or (at your   *
  18.  *  option) any later version.                     *
  19. ***************************************************)
  20.  
  21.  
  22. program StarTrek;
  23.  
  24.  
  25. const
  26.    ImportLongDescription = True;   // True - All Episode Description.
  27.                                    // False - Only Short Synopsis
  28.    ImportLargePicture  =   True;   // True - A Larger Pictures of the Episodes Will Be Imported
  29.                                    // False - A Small Thumbnail Picture Will be Imported
  30.    StorePictureInDatabase = True;  // False - Will Store the Picture Externally
  31.  
  32.    ImportComments = True;          // Comment Will Contain : Writers & Teleplay Info,Production
  33.                                    // Number & Stardate
  34.  
  35.    ImportGuestCast = True;         // Add Info on Guest Cast to Actors field
  36.  
  37.    OnErrorWholeList = True;       // If Episode Title not found
  38.                                   // display a list of ALL episodes to choose from
  39.  
  40.    VerboseMode = True;            // True - Will Display Error messages
  41.  
  42.  
  43.  
  44.   // Use Only ONE of the following Episode Titles Templetes:
  45.   // Uncomment only ONE template
  46.  
  47.  
  48.    TitleTemplate = 'Series - Episode Nr -  Title';   // Example: Star Trek TOS - 1x01 - The Cage
  49. // TitleTemplate = 'Title -  Episode Nr -  Series';  // Example: The Cage - 1x01 - Original Series
  50. // TitleTemplate = 'Title -  Series';                // Example: The Cage - TOS
  51. // TitleTemplate = 'Series - Title';                 // Example: DS9 - Dax
  52. // TitleTemplate = 'Title';                          // Example: The Cage
  53.  
  54.  
  55.   // If CacheMode is TRUE you should verify a file 'StarTrekScript_Cache.txt'
  56.   // Exists in the Scripts Directory Under Ant Movie Catalog Install Directory
  57.   // If not you MUST (at First Run ) create an EMPTY File and put it in that directory.
  58.  
  59.    CacheMode   = True;            // True - Will Store A Series Listing in File and
  60.                                   // Use it to offload server queries
  61.                                   // False - Will Query Series Episode listing for every entry
  62.  
  63. var
  64.   EpisodeTitle,OriginalTitle: string;
  65.   TheEpisodesListing: string;
  66.   PickTreeSelected,TitleCorrected,CacheExists:Boolean;
  67.   CacheFile:TStringList;
  68.  
  69.  
  70. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  71. var
  72.   i: Integer;
  73. begin
  74.   result := -1;
  75.  
  76.   if StartAt < 0 then
  77.     StartAt := 0;
  78.   for i := StartAt to List.Count-1 do
  79.   begin
  80.     if Pos(Pattern, List.GetString(i)) <> 0 then
  81.     begin
  82.       result := i;
  83.       Break;
  84.     end;
  85.   end;
  86. end;
  87.  
  88. Function GetEpisodeAddress(Line:String):String;
  89. var
  90.   BeginPos,EndPos:Integer;
  91. Begin
  92.    Result:='';
  93.    BeginPos:= Pos('a href=',Line);
  94.    BeginPos:= BeginPos +8;
  95.    EndPos:= Pos('">',Line);
  96.    Result:=Copy(Line,BeginPos, EndPos-BeginPos);
  97. End;
  98.  
  99.  
  100. procedure AnalyzePage(Address: string);
  101. var
  102.   Page: TStringList;
  103.   LineNr,TitleLineNr: Integer;
  104.   BeginPos,EndPos:Integer;
  105.   Line:String;
  106.   Title,EpisodeAddress:String;
  107. begin
  108.   Page := TStringList.Create;
  109.   if CacheMode Then
  110.   begin
  111.     if not CacheExists then
  112.     begin
  113.        Page.Text := GetPage(Address);
  114.        CacheFile.Free;
  115.        CacheFile:=TStringList.Create;
  116.        CacheFile.Add(Address);
  117.        For LineNr:=0 to Page.Count -1 do
  118.        Begin
  119.           CacheFile.Add(Page.GetString(LineNr));
  120.        End;
  121.     end
  122.     else
  123.        For LineNr:=0 to CacheFile.Count -1 do
  124.        Begin
  125.           Page.Add(CacheFile.GetString(LineNr));
  126.        End;
  127.  
  128.   end
  129.   else
  130.       Page.Text := GetPage(Address);
  131.  
  132.  
  133.   // Find The Selected Episode in The Whole Episode Listings
  134.   LineNr := FindLine('<TABLE STYLE=',Page,0);
  135.   if LineNr > 0 Then
  136.   begin
  137.     Line :=Page.GetString(LineNr);
  138.     TitleLineNr := FindLine(EpisodeTitle, Page, LineNr);
  139.     if TitlelineNr > -1 then
  140.     begin
  141.  
  142.        // Title   
  143.        Line :=Page.GetString(TitleLineNr);
  144.        EndPos:=Pos('</A>',Line);
  145.        Title:=Copy(Line,1,EndPos-1);
  146.  
  147.        // Address
  148.        Line :=Page.GetString(TitleLineNr-1);
  149.        EpisodeAddress:=GetEpisodeAddress(Line);
  150.  
  151.        Address:='http://www.startrek.com' + EpisodeAddress;
  152.  
  153.        EndPos:=Pos('Part I',EpisodeTitle);
  154.        if (EndPos <> 0) and (Length(EpisodeTitle) > 7) then
  155.           Title:=Title + ' ';
  156.  
  157.        // Find Next Matching Titles
  158.        LineNr:= FindLine(Title,Page,TitleLineNr+1);
  159.        if LineNr > -1 then
  160.        begin
  161.           PickTreeClear;
  162.           PickTreeAdd('Matching Episode Titles for: ' + EpisodeTitle, '');
  163.           PickTreeAdd( Title, 'http://www.startrek.com' + EpisodeAddress);
  164.           AddEpisodesTitles(Page,LineNr);
  165.           PickTreeSelected:=PickTreeExec(Address);
  166.           if Not PickTreeSelected Then
  167.               Exit;
  168.  
  169.        End;
  170.  
  171.     End
  172.     Else
  173.     Begin
  174.           if OnErrorWholeList  then
  175.           Begin
  176.             PickTreeClear;
  177.             PickTreeAdd('Select A Title Closest to: '+ EpisodeTitle, '');
  178.             DisplayAllTitles(Page,LineNr);
  179.             PickTreeSelected:=PickTreeExec(Address);
  180.             if Not PickTreeSelected Then
  181.               Exit;
  182.           End
  183.           else
  184.           begin
  185.               if VerboseMode then
  186.                  Showmessage(' Episode ' + EpisodeTitle + ' Not Found');
  187.               Exit;
  188.           End;
  189.  
  190.  
  191.     End;
  192.  
  193.      
  194.     HTMLDecode(Address);
  195.     SetField(fieldURL, Address);
  196.  
  197.     Page.Free;
  198.     Page:=TStringList.Create();
  199.     Page.Text := GetPage(Address);
  200.  
  201.     // Handle Page redirection
  202.     LineNr:= FindLine('window.location.replace',Page,0);
  203.     if LineNr > -1 then
  204.     begin
  205.       Line:=Page.GetString(LineNr);
  206.       BeginPos:= Pos('replace',Line) + 9;
  207.       EndPos := Pos(')',Line) -1;
  208.       Address:=Copy(Line,BeginPos, EndPos-BeginPos);
  209.       Address:='http://www.startrek.com' + Address;
  210.  
  211.       Page.Free;
  212.       Page:=TStringList.Create();
  213.       Page.Text := GetPage(Address);
  214.          
  215.          
  216.     End;
  217.      
  218.     AnalyzeEpisodePage(Page);
  219.    
  220.  
  221.   end
  222.   else
  223.      if VerboseMode then
  224.        ShowMessage('Error In Page for ' + EpisodeTitle);
  225.  
  226.   Page.Free;
  227. end;
  228.  
  229.  
  230. procedure DisplayAllTitles(Page: TStringList; var LineNr: Integer);
  231. var
  232.   Line,Title,Address,Season: string;
  233.   BeginPos,EndPos,EndLine: Integer;
  234. begin
  235.  
  236.   LineNr:=LineNr +1;
  237.   EndLine :=  FindLine('</HTML>',Page,LineNr);
  238.  
  239.   Line := Page.GetString(LineNr); 
  240.  
  241.   While (LineNr < EndLine) do
  242.   begin
  243.  
  244.          BeginPos:=Pos('SEASON',Line);
  245.          if BeginPos <> 0 Then
  246.          Begin
  247.                EndPos:=Pos('</b>',Line);
  248.                Season:=Copy(Line,BeginPos,EndPos-BeginPos);
  249.                PickTreeAdd(Season,'');
  250.          End;
  251.  
  252.          EndPos:= Pos('</A></TD>',Line);
  253.  
  254.          if EndPos <> 0 then
  255.          Begin
  256.                   // Title   
  257.              Title:=Copy(Line,1,EndPos-1);
  258.  
  259.               // Address
  260.             Line :=Page.GetString(LineNr-1);
  261.             Address:=GetEpisodeAddress(Line);
  262.  
  263.              PickTreeAdd(Title, 'http://www.startrek.com' + Address);
  264.                
  265.          End;
  266.  
  267.    
  268.          LineNr:=LineNr+1;
  269.  
  270.          Line := Page.GetString(LineNr);
  271.  
  272.   End; //while
  273.  
  274. end;
  275.  
  276.  
  277. procedure AddEpisodesTitles(Page: TStringList; var LineNr: Integer);
  278. var
  279.   Line,Title,Address: string;
  280.   EndPos: Integer;
  281. begin
  282.   While (LineNr > -1) do
  283.   begin
  284.     Line := Page.GetString(LineNr);
  285.  
  286.    // Title   
  287.     Line :=Page.GetString(LineNr);
  288.     EndPos:=Pos('</A>',Line);
  289.     Title:=Copy(Line,1,EndPos-1);
  290.  
  291.     // Address
  292.     Line :=Page.GetString(LineNr-1);
  293.     Address:=GetEpisodeAddress(Line);
  294.  
  295.     PickTreeAdd(Title, 'http://www.startrek.com' + Address);
  296.  
  297.     LineNr:= FindLine(EpisodeTitle,Page,LineNr+1);
  298.  
  299.   End;
  300.  
  301. end;
  302.  
  303. function FindValue(BeginTag,EndTag:String;                                       Page:TStringList; var LineNr:Integer):String;
  304. var
  305. BeginPos,EndPos:Integer;
  306. Line,Value:String;
  307. A:Char;
  308. begin
  309.   Value:='';
  310.   BeginPos:=0;
  311.  
  312.   Repeat
  313.  
  314.      Line := Page.GetString(LineNr);
  315.      BeginPos := pos(BeginTag, Line);
  316.      LineNr:=LineNr+1;
  317.    
  318.   Until ((BeginPos <> 0) or (LineNr > Page.Count-1 ));
  319.  
  320.   if BeginPos > 0 then
  321.   begin
  322.        BeginPos := BeginPos + Length(BeginTag);
  323.        LineNr:=LineNr - 1;
  324.   end;
  325.  
  326.  
  327.   if BeginTag = EndTag then
  328.   begin
  329.      Delete(Line,1,BeginPos);
  330.      BeginPos:=1;
  331.   End;
  332.  
  333.   EndPos := pos(EndTag, Line);
  334.  
  335.   While ((EndPos = 0) and (LineNr < Page.Count-1 ) ) do   
  336.   begin
  337.        Value := Value + copy(Line, BeginPos, Length(Line) - BeginPos);
  338.        // Next Lines
  339.        BeginPos:= 0;
  340.        LineNr:= LineNr+1;
  341.        Line:= Page.GetString(LineNr);
  342.        EndPos := Pos(EndTag,Line);
  343.      
  344.   End;
  345.   Value:= Value + copy(Line, BeginPos, EndPos - BeginPos);
  346.  
  347.   Result:=Value;
  348. End;
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355. procedure AnalyzeEpisodePage(Page: TStringList);
  356. var
  357.   Line, Value, Value2, FullValue: string;
  358.   Production,StarDate,Year,PictureAddress:String;
  359.   LineNr,DirectorLine,StartLine: Integer;
  360.   BeginPos, EndPos: Integer;
  361.   PicturePage:TStringList;
  362. begin
  363.  
  364.  
  365. // Original Title & Year , Production Nr & Star Date
  366.   StartLine := FindLine('Begin Episodes List', Page, 0);
  367.  
  368.   LineNr:=StartLine+1;
  369.   Line := Page.GetString(LineNr);
  370.  
  371.   Value:=FindValue('<B>','</B>',Page,LineNr);
  372.  
  373.   if Value <> '' Then
  374.   begin
  375.  
  376.     HTMLDecode(Value);
  377.    
  378.     SetField(fieldTranslatedTitle, Value);
  379.  
  380.     if PickTreeSelected or TitleCorrected Then
  381.     Begin
  382.  
  383.       Value2:=Getfield(fieldOriginalTitle);
  384.       FullValue:= StringReplace(Value2,OriginalTitle,Value);
  385.       SetField(fieldOriginalTitle,FullValue);
  386.      
  387.     End;
  388.  
  389.     Line := Page.GetString(LineNr);
  390.  
  391.     Year:='';
  392.  
  393.     // Concatenate Next 2 Lines
  394.     BeginPos := Pos(EpisodeTitle,Line);
  395.     Delete(Line,1,BeginPos);
  396.     Value:=Line;
  397.     Line:=Page.GetString(LineNr+1);
  398.     Value:=Value + Line;
  399.     HTMLRemoveTags(Value);
  400.  
  401.     BeginPos:= Pos('Production',Value);
  402.     if BeginPos > 0 then
  403.     Begin
  404.        Production:= Copy(Value,BeginPos,14);
  405.    
  406.        EndPos :=  Pos('Stardate',Value);
  407.        StarDate := copy(Value,EndPos,Length(Value) - EndPos);
  408.  
  409.        Year:=Copy(Value,BeginPos + 14,EndPos -BeginPos -14);
  410.    
  411.        EndPos:=Length(Year);
  412.        Year:=Copy(Year,EndPos-3,4);
  413.    
  414.     End;
  415.    
  416.     SetField(fieldYear, Year);
  417.   end
  418.   else
  419.   begin
  420.       if VerboseMode then
  421.          ShowMessage('Could Not Find Episode Title')
  422.       exit;
  423.   end;
  424.  
  425.  
  426.  
  427.   // Picture
  428.   if not ImportLargePicture then
  429.   begin
  430.        LineNr := FindLine('<IMG SRC=/content/Photo/', Page, StartLine);
  431.        if LineNr > -1 then
  432.        begin
  433.          Line := Page.GetString(LineNr);
  434.          BeginPos := pos('Photo', Line) + 5;
  435.          Delete(Line, 1, BeginPos);
  436.          EndPos := pos('ALIGN', Line) -1;
  437.          Value := copy(Line, 1, EndPos);
  438.  
  439.          PictureAddress:='http://www.startrek.com/content/Photo/'+ Value;
  440.          GetPicture(PictureAddress, not StorePictureInDatabase); // False = do not store picture          // externally ; store it in the catalog file
  441.  
  442.        end;
  443.    end
  444.    else
  445.    Begin
  446.         LineNr := FindLine('/art/tinyicons/PHOTO.gif', Page, StartLine);
  447.         if LineNr > -1 then
  448.         begin
  449.           Line:=Page.GetString(LineNr-2);
  450.  
  451.  
  452.           BeginPos:=Pos('href="',Line) + 6;
  453.           EndPos:=Pos('">',Line);
  454.           Value:= Copy(Line,BeginPos,EndPos-BeginPos);
  455.           PictureAddress:='http://www.startrek.com'+ Value;
  456.  
  457.           PicturePage:=TStringList.Create();
  458.           PicturePage.Text := GetPage(PictureAddress);
  459.           LineNr:=FindLine('/content/PHOTO/',PicturePage,0);
  460.           if LineNr > -1 then
  461.           Begin
  462.              Line:=PicturePage.GetString(LineNr);
  463.              BeginPos:=Pos('PHOTO',Line) + 5;
  464.              EndPos:= Pos('">',Line);
  465.              Value:= Copy(Line,BeginPos,EndPos-BeginPos);
  466.              PictureAddress:='http://www.startrek.com/content/PHOTO'+ Value;
  467.        
  468.              GetPicture(PictureAddress, not StorePictureInDatabase); // False = do not store
  469.                                                 // externally ; store it in the catalog file
  470.  
  471.           End
  472.           PicturePage.Free;
  473.      
  474.         End;
  475.   End;
  476.  
  477.   // Director
  478.   DirectorLine:=0;
  479.   LineNr := FindLine('Director:', Page, StartLine);
  480.   if LineNr > -1 then
  481.   begin
  482.     DirectorLine:=LineNr;
  483.     Value:=FindValue('<B>','</B>',Page,LineNr);
  484.     HTMLRemoveTags(Value);
  485.  
  486.     HTMLDecode(Value);
  487.     SetField(fieldDirector, Value);
  488.   end
  489.   else
  490.     if VerboseMode then
  491.        ShowMessage('Could Not Find Director Paragraph');
  492.  
  493.  
  494.  
  495.   // Actors
  496.   LineNr := FindLine('Cast:', Page, StartLine);
  497.   if LineNr > -1 then
  498.   begin
  499.     FullValue := '';
  500.     LineNr:=LineNr+1;
  501.     Line := Page.GetString(LineNr); 
  502.  
  503.     Value2:='Guest Cast';
  504.     if ImportGuestCast then
  505.        Value2:='Creative staff';
  506.  
  507.     While (Pos(Value2,Line) = 0) do
  508.     begin
  509.  
  510.       HTMLRemoveTags(Line);
  511.       if (FullValue <> '') and (Length(Line) > 1 ) then
  512.             FullValue := FullValue + ', ';
  513.       FullValue := FullValue + Line;
  514.  
  515.       LineNr:=LineNr+1;   
  516.       Line := Page.GetString(LineNr); 
  517.          
  518.     end;
  519.    
  520.  
  521.     HTMLDecode(FullValue);
  522.     SetField(fieldActors, FullValue);
  523.   end
  524.   else
  525.     if VerboseMode then
  526.         ShowMessage('Could Not Find Cast Paragraph');
  527.  
  528.  
  529.  
  530.   //Country
  531.   Value := 'United States';
  532.   SetField(fieldCountry, Value);
  533.  
  534.   //Category
  535.   Value := 'Science Fiction';
  536.   SetField(fieldCategory, Value);
  537.  
  538.   // Language
  539.   Value := 'English';
  540.   SetField(fieldLanguages, Value);
  541.  
  542.   // Producer
  543.   Value := 'Paramount Pictures';
  544.   SetField(fieldProducer, Value);
  545.  
  546.   //Description
  547.   LineNr := FindLine('Synopsis:', Page, StartLine);
  548.   if LineNr > -1 then
  549.   begin
  550.     LineNr:=LineNr +1;
  551.    
  552.     if ImportLongDescription Then
  553.     begin
  554.        FullValue := '';
  555.        Line := Page.GetString(LineNr);
  556.        While ( Pos('Related Links',Line) = 0 ) do
  557.        begin
  558.  
  559.           HTMLRemoveTags(Line);
  560.           Line:=StringReplace(Line,#11,' ');
  561.           Line:=StringReplace(Line,'—',' ');
  562.  
  563.           FullValue := FullValue + Line;
  564.           LineNr:=LineNr +1;
  565.           Line := Page.GetString(LineNr);
  566.  
  567.        End;
  568.      
  569.      
  570.     end
  571.     else
  572.        FullValue:=FindValue('<B>','</B>',Page,LineNr);
  573.  
  574.     HTMLRemoveTags(FullValue);
  575.  
  576.     SetField(fieldDescription, FullValue);
  577.   end;
  578.  
  579.  
  580.   // Comments
  581.   if ImportComments then
  582.   begin
  583.         FullValue := '';
  584.         LineNr :=DirectorLine +1;
  585.         Line:= Page.GetString(LineNr);
  586.         While(Pos('p class',Line) = 0 ) do
  587.         begin
  588.            
  589.             HTMLRemoveTags(Line);
  590.  
  591.             if FullValue <> '' then
  592.                 FullValue := FullValue + #13#10;
  593.  
  594.             FullValue := FullValue + Line;
  595.             LineNr := LineNr + 1;
  596.             Line := Page.GetString(LineNr);
  597.          
  598.          End;   
  599.      
  600.          FullValue:=FullValue + #13#10 + Production + ' ' + Stardate;
  601.  
  602.          SetField(fieldComments, FullValue);
  603.    
  604.    End;
  605.  
  606.  
  607.    DisplayResults;
  608. end;
  609.  
  610. function CorrectEpisodeTitle (Title:string):string;
  611. var Words:Array of string;
  612.     Replace,Original:String;
  613.     Index:Integer;
  614. begin
  615.    Title := AnsiMixedCase(Title,' ');
  616.    TitleCorrected:=False;
  617.  
  618.    Setarraylength(Words,10);
  619.    Words[0]:=' In ';
  620.    Words[1]:=' On ';
  621.    Words[2]:=' Of ';
  622.    Words[3]:=' As ';
  623.    Words[4]:=' The ';
  624.    Words[5]:=' At ';
  625.    Words[6]:=' And ';
  626.    Words[7]:=' A ';
  627.    Words[8]:=' An ';
  628.    Words[9]:=' To ';
  629.    for Index:=0 to 9 do
  630.    begin
  631.      if Pos(Words[Index],Title) <> 0 then
  632.      begin
  633.        Original:=Words[Index];
  634.        Replace:=AnsiLowerCase(Original);
  635.        Title:=StringReplace(Title,Original,Replace);
  636.        TitleCorrected:=True;
  637.      End;
  638.    End;
  639.    
  640.    Result:=Title;
  641. End;
  642.  
  643. var
  644.   BeginPos,EndPos,Len:Integer;
  645.   Template,BaseAddress:String;
  646. begin
  647.  
  648.   if CheckVersion(3,4,0) then
  649.   begin
  650.     TheEpisodesListing:='';
  651.  
  652.     if CacheMode Then
  653.     begin
  654.        CacheFile:=TStringList.Create;
  655.        CacheFile.LoadFromFile('StarTrekScript_Cache.txt')
  656.     End;
  657.  
  658.     EpisodeTitle := GetField(fieldOriginalTitle);
  659.     if EpisodeTitle = '' then
  660.        EpisodeTitle := GetField(fieldTranslatedTitle);
  661.  
  662.    
  663.     PickTreeClear;
  664.     PickTreeAdd('Select A Star Trek Series','');   
  665.     BaseAddress:='http://www.startrek.com/library/';
  666.      
  667.     if (Pos('TOS',EpisodeTitle) > 0) or (Pos('Original Series',EpisodeTitle) > 0 ) Then
  668.     Begin
  669.       TheEpisodesListing:= BaseAddress+'episodes_TOS.asp';
  670.  
  671.     End;
  672.     PickTreeAdd('The Original Series',BaseAddress +'episodes_TOS.asp');   
  673.  
  674.     if (Pos('DS9',EpisodeTitle) > 0) or (Pos('Deep Space',EpisodeTitle) > 0 ) then
  675.     Begin
  676.       TheEpisodesListing:= BaseAddress + 'episodes_DS9.asp';
  677.  
  678.     End;
  679.     PickTreeAdd('Deep Space Nine',BaseAddress+'episodes_DS9.asp');   
  680.  
  681.  
  682.     if (Pos('TNG',EpisodeTitle) > 0) or ( Pos('Next Generation',EpisodeTitle) > 0 ) then
  683.     Begin
  684.       TheEpisodesListing:= BaseAddress+'episodes_TNG.asp';
  685.  
  686.     End;
  687.     PickTreeAdd('The Next Generation',BaseAddress+'episodes_TNG.asp');   
  688.  
  689.     if ( Pos('VOY',EpisodeTitle) > 0) or (Pos('Voyager',EpisodeTitle) > 0 ) then
  690.     Begin
  691.       TheEpisodesListing:= BaseAddress+ 'episodes_voy.asp';
  692.  
  693.     End;
  694.     PickTreeAdd('Voyager',BaseAddress+'episodes_voy.asp');   
  695.  
  696.     if TheEpisodesListing = '' then
  697.     Begin
  698.          if not PickTreeExec(TheEpisodesListing) Then
  699.          Begin
  700.             ShowMessage('You Must Select A Series');
  701.             Exit;
  702.          End;
  703.     End;
  704.  
  705.  
  706.     CacheExists:=False;
  707.     if CacheMode Then
  708.     Begin
  709.       if CacheFile.Count > 0 Then
  710.       Begin
  711.         // verify the Cache is for the same star trek series
  712.         CacheExists:= (FindLine(TheEpisodesListing,CacheFile,0) > -1 );
  713.       End;
  714.     End;
  715.  
  716. // Extract Episode Title from template
  717.  
  718.     Template:= TitleTemplate;
  719.  
  720.     BeginPos:=Pos('-',EpisodeTitle);
  721.     Len:= Length(EpisodeTitle);
  722.     case Template of
  723.     'Series - Episode Nr -  Title':
  724.        Begin
  725.           Delete(EpisodeTitle, 1, BeginPos);
  726.           BeginPos:=Pos('-',EpisodeTitle);
  727.           Delete(EpisodeTitle, 1, BeginPos);
  728.        End
  729.     'Title -  Series':
  730.        Begin
  731.           BeginPos:=Pos('-',EpisodeTitle);
  732.           Delete(EpisodeTitle, BeginPos, Len);
  733.        End
  734.     'Title -  Episode Nr -  Series':
  735.        Begin
  736.           BeginPos:=Pos('-',EpisodeTitle);
  737.           Delete(EpisodeTitle, BeginPos, Len);
  738.        End
  739.     'Series - Title':
  740.        Begin
  741.           Delete(EpisodeTitle, 1, BeginPos);
  742.        End
  743.     'Title':
  744.           ;
  745.     Else
  746.        Begin
  747.           if VerboseMode then
  748.              ShowMessage('Episode Title does not match the template: ' + Template);
  749.           Input('Star Trek Episode Guide Import', 'Enter Episode Title', EpisodeTitle);
  750.        End;
  751.     End; // Case
  752.  
  753.     EpisodeTitle := Trim(EpisodeTitle);
  754.     OriginalTitle:= EpisodeTitle;
  755.     EpisodeTitle:=CorrectEpisodeTitle(EpisodeTitle);
  756.  
  757.  
  758.     AnalyzePage(TheEpisodesListing);
  759.  
  760.   end
  761.   else
  762.      ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the                 version 3.4.0)');
  763.  
  764.   if CacheMode Then
  765.   begin
  766.        CacheFile.SaveToFile('StarTrekScript_Cache.Txt');
  767.        CacheFile.Free;
  768.   end;
  769. end.
  770.